During the last century, the manufacturing industry has moved from pure manual or simple mechanically automated production of goods to a new level where almost everything is controlled by electronic control systems and computers. Although areas like assembling or repairing are still done mostly by people, it is almost impossible to see large scale manual mechanical processing today mainly due to the requirements of precision, repeatability and speed. In order to meet the increasing requirements of produced components, the way of controlling machine tools evolved from manual operation to mechanical control systems during 19th century, then to Numerical Control (NC) systems in the middle of 20th century and finally to Computer Numerical Control (CNC) systems.
Modern CNC machines are extremely versatile in their ability to make parts with complex geometry and good surface quality. However, efficient usage of all machine capabilities requires highly experienced personnel and a relatively long time to program. The main reason it requires tremendous time investments is a lack of efficient and flexible automatic path planning algorithms and, as a result, a lack of reliable, fast and fully automatic software for CNC programming. Existing algorithms are usually limited to specific problem solutions due to the geometric and computational complexity of path planning. In addition, existing algorithms cannot be run efficiently on modern, highly parallel hardware for utilization of modern computing capacity and as a result are limited to performance of traditional serial processors.
To improve upon this situation, it is desirable to provide a data structure and algorithm to improve modeling and digital representation of complex solid shapes for use in a CNC machining process. In addition, it is desirable to generate cutting tool paths for CNC machine tools utilizing improved knowledge of valid orientation angles relative to a particular surface geometry.